// 使用HTTP模块创建一个Web服务，按作业要求实现对应的请求处理。
// 1. 导入 http 和 fs 模块
const http = require("http");
const fs = require("fs");
// 2. 创建Web Server服务
const app = http.createServer();
// 3. 注册 request 请求事件处理，负责处理http请求，并作出对应的响应
app.on("request", (req, res) => {
    // 获取请求的url地址
    let url = req.url;
    console.log(url);
    // console.log("__filename:", __filename);
    // console.log("__dirname:", __dirname);
    // 判断url地址，并作出对应的响应 (web的路由设置)
    if(url == "/"){ // 请求首页
        res.setHeader("Content-Type","text/html; charset=utf-8");
        // 读取views/index.html静态文件，并设置为响应内容
        res.write(fs.readFileSync(__dirname + "/views/index.html"));
    } else if(url == "/about") { // 请求关于我们页面
        res.setHeader("Content-Type","text/html; charset=utf-8");
        res.write(fs.readFileSync(__dirname + "/views/about.html"));
    } else if(url == "/baidu") { // 请求页面重定向
        res.statusCode = 302; 
        // 设置重定向地址，就是设置客户端浏览器的url地址
        res.setHeader("Location","http://www.baidu.com");

    } else if(url == "/qq") { // 请求qq音乐页面
        res.setHeader("Content-Type","text/html; charset=utf-8");
        res.write(fs.readFileSync(__dirname + "/views/qq.html"));
    } else if(url.startsWith("/static/")) { // 处理所有静态资源的请求加载
        //根据不同的静态资源文件设置不同的响应头信息
        if(url.endsWith(".css")){
            res.setHeader("Content-Type","text/css");
        } else if(url.endsWith(".png")){
            res.setHeader("Content-Type","image/png");
        } else if(url.endsWith(".jpg")){
            res.setHeader("Content-Type","image/jpeg");
        } else if(url.endsWith(".js")){
            res.setHeader("Content-Type","application/javascript");
        }
        // 响应对应的静态资源文件
        res.write(fs.readFileSync(__dirname + url)); 
    } else { // 除了上面的请求，其他都是404错误
        res.statusCode = 404;
        res.setHeader("Content-Type","text/html; charset=utf-8");
        res.write("<h1>请求地址不存在！</h1>");
    }
    // 执行响应
    res.end();

});
// 4. 设置监听端口
app.listen(8080, () => {
    console.log("服务已开启。端口：8080...");
});
